/*
 * @Author: 姚潘涛
 * @Date: 2024-04-08 15:18:03
 * @LastEditors: 姚潘涛
 * @LastEditTime: 2024-10-10 16:34:28
 * @Description:
 *
 * Copyright (c) 2024 by pandaman, All Rights Reserved.
 */
#ifndef XICT_DRIVER_PARAM_DRIVER_PARAMS_H
#define XICT_DRIVER_PARAM_DRIVER_PARAMS_H

#include "xict_common/utils/utils_yaml.h"
#include "xict_driver/param/param_base.h"
#include "xict_driver/utils/data_definition.h"
#include <vector>

namespace xict_driver {
    namespace param {
        /**
         * @brief 驱动参数
         *
         */
        class DriversParams : public ParamBase {
        public:
            typedef std::shared_ptr<DriversParams> Ptr;

            virtual ~DriversParams() = default;

            /**
             * @brief Construct a new Drivers Params object 构造函数
             *
             */
            DriversParams();

            /**
             * @brief load camera driver config file
             *
             * @param _yaml_node
             * @return CameraDriverConfig
             */
            xict_driver::utils::CameraDriverConfig
            LoadCameraDriverConfig(const YAML::Node& _yaml_node);

            /**
             * @brief Load 重写基类加载函数
             * @param _path_of_yaml
             */
            void Load(std::string _path_of_yaml) override;

            /**
             * @brief Print 重写基类打印函数
             */
            void Print() override;

        public:
            /// @brief 相机参数
            std::vector<xict_driver::utils::CameraDriverConfig>
                camera_driver_configs_;
        };
    }   // namespace param
}   // namespace xict_driver
#endif